/* $Header: /usr/cvsroot/target/h/wrn/wm/snmp/engine/auxmth.h,v 1.2 2001/11/06 21:35:01 josh Exp $ */

/*
 * Copyright (C) 1999-2005 Wind River Systems, Inc.
 * All rights reserved.  Provided under license only.
 * Distribution or other use of this software is only
 * permitted pursuant to the terms of a license agreement
 * from Wind River Systems (and is otherwise prohibited).
 * Refer to that license agreement for terms of use.
 */


/****************************************************************************
 *  Copyright 1995-1997 Epilogue Technology Corporation.
 *  Copyright 1998 Integrated Systems, Inc.
 *  All rights reserved.
 ****************************************************************************/

/*
 * $Log: auxmth.h,v $
 * Revision 1.2  2001/11/06 21:35:01  josh
 * new revised path structure, first pass.  Also removing useless
 * shell include files.
 *
 * Revision 1.1.1.1  2001/11/05 17:47:22  tneale
 * Tornado shuffle
 *
 * Revision 9.6  2001/04/11 20:12:00  josh
 * merging changes from the kingfisher branch back onto
 * the trunk
 *
 * Revision 9.5  2001/01/19 22:22:03  paul
 * Update copyright.
 *
 * Revision 9.4.2.2  2001/03/12 22:07:51  tneale
 * Updated copyright
 *
 * Revision 9.4.2.1  2000/09/21 21:14:53  josh
 * bringing branch include files in line with root
 *
 * Revision 9.4  2000/03/17 19:48:29  meister
 * Update copyright notice
 *
 * Revision 9.3  2000/03/09 16:54:40  tneale
 *  Added #ifdef for C++ to declare extern C if needed
 *
 * Revision 9.2  2000/02/04 21:54:14  josh
 * prototyping functions that may need to be called by other modules
 * this is done primarily to make the vxWorks compiler happy.
 * Warning:  the prototypes added may be duplicated by a mib_hand.h
 * file generated by Emissary.
 *
 * Revision 9.1  1999/05/24 20:12:11  josh
 * 'compc' and 'compl' have been replaced by 'tcount' and 'tlist'
 * to avoid C++ compiler errors.
 *
 * Revision 9.0  1998/10/16 22:10:05  sar
 * Update version stamp to match release
 *
 * Revision 8.2  1998/05/29 03:53:54  sar
 * Add and use defines for v2 types and v2 protocol pieces.  This allows
 * us to include the types and pieces for other versions, such as v3,
 * without having to touch all of the seperate files that use the
 * types or pieces.
 *
 * Revision 8.1  1998/02/25 04:50:25  sra
 * Update copyrights.
 *
 * Revision 8.0  1997/11/18 00:56:21  sar
 * Updated revision to 8.0
 *
 * Revision 7.2  1997/03/20 06:48:01  sra
 * DFARS-safe copyright text.  Zap!
 *
 * Revision 7.1  1997/02/25 10:49:26  sra
 * Update copyright notice, dust under the bed.
 *
 * Revision 7.0  1996/03/18 20:17:33  sar
 * Updated rev to 7.0 and copyright to 96
 *
 * Revision 6.3  1996/01/05  19:09:34  sar
 * Added null_next and null_test functions for use with the mibcompiler
 *
 * Revision 6.2  1995/11/11  00:05:52  sar
 * added *_TestAndIncr_async functions.
 *
 * Revision 6.1  1995/10/20  22:53:35  sar
 * removed bitstring & uinteger32 options
 *
 * Revision 6.0  1995/05/31  21:46:32  sra
 * Release 6.0.
 *
 * Revision 1.1  1995/05/06  01:39:54  sar
 * Initial revision
 *
 * 
 */

/* [clearcase]
modification history
-------------------
01a,19apr05,job  update copyright notices
*/


/* Defs for all of the method routines written in auxi */

#ifndef auxmth_inc
#define auxmth_inc

#ifdef __cplusplus
extern"C" {
#endif

#if (!defined(asn1conf_inc))
#include <wrn/wm/snmp/engine/asn1conf.h>
#endif

#if (!defined(buildpkt_inc))
#include <wrn/wm/snmp/engine/buildpkt.h>
#endif

/* null test functions */
extern int null_test_proc __((int         form,
			      OIDC_T      lastmatch,
			      int	  tcount,
			      OIDC_T     *tlist,
			      char       *cookie,
			      SNMP_PKT_T *pktp,
			      int         indx));

extern void null_test_async __((OIDC_T	    lastmatch,
				int	    tcount,
				OIDC_T	   *tlist,
				SNMP_PKT_T *pktp,
				VB_T	   *vbp));


/* generic test function (for non-settable scalars) */
extern int it_exists __((int		 form,
			 OIDC_T		 lastmatch,
			 int		 tcount,
			 OIDC_T		*tlist,
			 char		*cookie,
			 SNMP_PKT_T	*pktp,
			 int		 vb_index));

extern void it_exists_async __((OIDC_T	   lastmatch,
			       int	   tcount,
			       OIDC_T	  *tlist,
			       SNMP_PKT_T *pktp,
			       VB_T	  *vbp));

/* Test function for test and increment type variables */
extern void test_TestAndIncr_async __((OIDC_T      lastmatch,
				       int         tcount,
				       OIDC_T     *tlist,
				       SNMP_PKT_T *pktp,
				       VB_T       *vbp));

#if (ENVOY_USE_V2_TYPES)
/* Test and cleanup functions for UInteger64 */
extern void ui64_async_test __((OIDC_T	    lastmatch,
				int	    tcount,
				OIDC_T	   *tlist,
				SNMP_PKT_T *pktp,
				VB_T	   *vbp));

extern void ui64_async_cleanup __((PTR_T value));

#endif

/* various get functions */

extern INT_32_T null_get_proc __((OIDC_T	 lastmatch,
				  int		 tcount,
				  OIDC_T	*tlist,
				  char		*cookie,
				  SNMP_PKT_T	*pktp));

extern void null_get_async __((OIDC_T	   lastmatch,
			       int	   tcount,
			       OIDC_T	  *tlist,
			       SNMP_PKT_T *pktp,
			       VB_T	  *vbp));


extern INT_32_T get_int __((OIDC_T	 lastmatch,
			    int		 tcount,
			    OIDC_T	*tlist,
			    char	*cookie,
			    SNMP_PKT_T	*pktp));


extern unsigned char *get_ip_address __((OIDC_T		 lastmatch,
					 int		 tcount,
					 OIDC_T		*tlist,
					 char		*cookie,
					 SNMP_PKT_T	*pktp,
					 UINT_32_T	*addr));

extern OBJ_ID_T *get_object_identifier __((OIDC_T	 lastmatch,
					   int		 tcount,
					   OIDC_T	*tlist,
					   char		*cookie,
					   SNMP_PKT_T	*pktp,
					   int		*dynamic));

extern unsigned char *get_string __((OIDC_T	 lastmatch,
				     int	 tcount,
				     OIDC_T	*tlist,
				     char	*cookie,
				     int	*lengthp,
				     SNMP_PKT_T *pktp,
				     int	*dynamic));

extern UINT_32_T get_uint __((OIDC_T	  lastmatch,
			      int	  tcount,
			      OIDC_T	 *tlist,
			      char 	 *cookie,
			      SNMP_PKT_T *pktp));

extern UINT_32_T get_ulong __((OIDC_T	   lastmatch,
			       int	   tcount,
			       OIDC_T	  *tlist,
			       char	  *cookie,
			       SNMP_PKT_T *pktp));

/* We only include these two functions if v2 types are in use */
#if (ENVOY_USE_V2_TYPES)
extern UINT_64_T *get_ui64 __((OIDC_T	   lastmatch,
			       int	   tcount,
			       OIDC_T	  *tlist,
			       char	  *cookie,
			       SNMP_PKT_T *pktp,
			       int	  *dynamic));
#endif


extern void get_int_async __((OIDC_T	  lastmatch,
			      int	  tcount,
			      OIDC_T	 *tlist,
			      SNMP_PKT_T *pktp,
			      VB_T	 *vbp));

extern void get_ip_address_async __((OIDC_T	 lastmatch,
				     int	 tcount,
				     OIDC_T	*tlist,
				     SNMP_PKT_T *pktp,
				     VB_T	*vbp));

extern void get_object_identifier_async __((OIDC_T	 lastmatch,
					    int		 tcount,
					    OIDC_T	*tlist,
					    SNMP_PKT_T	*pktp,
					    VB_T	*vbp));

extern void get_string_async __((OIDC_T	     lastmatch,
				 int	     tcount,
				 OIDC_T	    *tlist,
				 SNMP_PKT_T *pktp,
				 VB_T	    *vbp));

extern void get_uint_async __((OIDC_T	   lastmatch,
			       int	   tcount,
			       OIDC_T	  *tlist,
			       SNMP_PKT_T *pktp,
			       VB_T	  *vbp));

extern void get_ulong_async __((OIDC_T	    lastmatch,
				int	    tcount,
				OIDC_T	   *tlist,
				SNMP_PKT_T *pktp,
				VB_T	   *vbp));

extern void get_TestAndIncr_async __((OIDC_T      lastmatch,
				      int         tcount,
				      OIDC_T     *tlist,
				      SNMP_PKT_T *pktp,
				      VB_T       *vbp));

/* We only include these two functions if v2 types are in use */
#if (ENVOY_USE_V2_TYPES)
extern void get_ui64_async __((OIDC_T	   lastmatch,
			       int	   tcount,
			       OIDC_T	  *tlist,
			       SNMP_PKT_T *pktp,
			       VB_T	  *vbp));
#endif

/* null next functions */
extern int null_next_proc __((OIDC_T      lastmatch,
			      int	  tcount,
			      OIDC_T     *tlist,
			      OIDC_T     *rlist,
			      char       *cookie,
			      SNMP_PKT_T *pktp));

extern void null_next_async __((OIDC_T	    lastmatch,
				int	    tcount,
				OIDC_T	   *tlist,
				SNMP_PKT_T *pktp,
				VB_T	   *vbp));

/* various undo procedures */
extern void undo_int_async __((OIDC_T      lastmatch,
			       int         tcount,
			       OIDC_T     *tlist,
			       SNMP_PKT_T *pktp,
			       VB_T       *vbp));

extern void undo_uint_async __((OIDC_T      lastmatch,
				int         tcount,
				OIDC_T     *tlist,
				SNMP_PKT_T *pktp,
				VB_T       *vbp));

extern void undo_TestAndIncr_async __((OIDC_T      lastmatch,
				       int         tcount,
				       OIDC_T     *tlist,
				       SNMP_PKT_T *pktp,
				       VB_T       *vbp));

#if (ENVOY_USE_V2_TYPES)
extern void ui64_async_undo __((OIDC_T      lastmatch,
				int         tcount,
				OIDC_T     *tlist,
				SNMP_PKT_T *pktp,
				VB_T       *vbp));
#endif

/* various set procedures */
extern void null_set_proc __((OIDC_T      lastmatch,
                              int         tcount,
                              OIDC_T     *tlist,
                              char       *cookie,
                              INT_32_T    value,
                              SNMP_PKT_T *pktp,
                              int         vb_index));

extern void null_set_async __((OIDC_T	   lastmatch,
			       int	   tcount,
			       OIDC_T	  *tlist,
			       SNMP_PKT_T *pktp,
			       VB_T	  *vbp));


extern void set_int __((OIDC_T		 lastmatch,
			int		 tcount,
			OIDC_T		*tlist,
			char		*cookie,
			INT_32_T	 value,
			SNMP_PKT_T	*pktp,
			int		 vb_index));

extern void set_uint __((OIDC_T		 lastmatch,
			 int		 tcount,
			 OIDC_T		*tlist,
			 char		*cookie,
			 UINT_32_T	 value,
			 SNMP_PKT_T	*pktp,
			 int		 vb_index));

/* We only include this function if v2 types are in use */
#if (ENVOY_USE_V2_TYPES)
extern void set_ui64 __((OIDC_T		 lastmatch,
			 int		 tcount,
			 OIDC_T		*tlist,
			 char		*cookie,
			 UINT_32_T	 high,
			 UINT_32_T	 low,
			 SNMP_PKT_T	*pktp,
			 int		 vb_index));
#endif

extern void set_int_async __((OIDC_T	  lastmatch,
			      int	  tcount,
			      OIDC_T	 *tlist,
			      SNMP_PKT_T *pktp,
			      VB_T	 *vbp));


extern void set_uint_async __((OIDC_T	   lastmatch,
			       int	   tcount,
			       OIDC_T	  *tlist,
			       SNMP_PKT_T *pktp,
			       VB_T	  *vbp));


extern void set_TestAndIncr_async __((OIDC_T      lastmatch,
				      int         tcount,
				      OIDC_T     *tlist,
				      SNMP_PKT_T *pktp,
				      VB_T       *vbp));

/* We only include this function if v2 types are in use */
#if (ENVOY_USE_V2_TYPES)
extern void ui64_async_set __((OIDC_T	   lastmatch,
			       int	   tcount,
			       OIDC_T	  *tlist,
			       SNMP_PKT_T *pktp,
			       VB_T	  *vbp));
#endif

#ifdef __cplusplus
}
#endif

#endif
